home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Software für Mac-OS X / Entwickler-Tools / netbeans / modules / ext / djava.jar / koala / dynamicjava / interpreter / context / VariableContext.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-03-14  |  4.3 KB  |  198 lines

  1. package koala.dynamicjava.interpreter.context;
  2.  
  3. import java.util.HashMap;
  4. import java.util.HashSet;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. import java.util.Set;
  8.  
  9. public class VariableContext implements SimpleContext {
  10.    protected Link scopes;
  11.    protected Scope scope;
  12.    protected Scope cscope;
  13.  
  14.    public void enterScope() {
  15.       this.scopes = koala.dynamicjava.interpreter.context.VariableContext.LinkFactory.createLink(this.scopes);
  16.       this.scope = this.scopes.scope;
  17.       this.cscope = this.scopes.cscope;
  18.    }
  19.  
  20.    public void enterScope(Set var1) {
  21.       this.enterScope();
  22.       Iterator var2 = var1.iterator();
  23.  
  24.       while(var2.hasNext()) {
  25.          ((AbstractVariable)var2.next()).set(this, (Object)null);
  26.       }
  27.  
  28.    }
  29.  
  30.    public void defineVariables(Set var1) {
  31.       for(AbstractVariable var3 : var1) {
  32.          if (var3.get(this) == koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
  33.             var3.set(this, (Object)null);
  34.          }
  35.       }
  36.  
  37.    }
  38.  
  39.    public Set leaveScope() {
  40.       HashSet var1 = new HashSet(11);
  41.       Iterator var2 = this.scope.keySet().iterator();
  42.  
  43.       while(var2.hasNext()) {
  44.          var1.add(new Variable((String)var2.next()));
  45.       }
  46.  
  47.       var2 = this.cscope.keySet().iterator();
  48.  
  49.       while(var2.hasNext()) {
  50.          Constant var10001 = new Constant;
  51.          if (this == null) {
  52.             throw null;
  53.          }
  54.  
  55.          var10001.<init>(this, (String)var2.next());
  56.          var1.add(var10001);
  57.       }
  58.  
  59.       this.scopes = this.scopes.next;
  60.       this.scope = this.scopes.scope;
  61.       this.cscope = this.scopes.cscope;
  62.       return var1;
  63.    }
  64.  
  65.    public Set getCurrentScopeVariables() {
  66.       HashSet var1 = new HashSet(11);
  67.       Iterator var2 = this.scope.keySet().iterator();
  68.  
  69.       while(var2.hasNext()) {
  70.          var1.add(new Variable((String)var2.next()));
  71.       }
  72.  
  73.       var2 = this.cscope.keySet().iterator();
  74.  
  75.       while(var2.hasNext()) {
  76.          Constant var10001 = new Constant;
  77.          if (this == null) {
  78.             throw null;
  79.          }
  80.  
  81.          var10001.<init>(this, (String)var2.next());
  82.          var1.add(var10001);
  83.       }
  84.  
  85.       return var1;
  86.    }
  87.  
  88.    public Set getCurrentScopeVariableNames() {
  89.       HashSet var1 = new HashSet(11);
  90.       Iterator var2 = this.scope.keySet().iterator();
  91.  
  92.       while(var2.hasNext()) {
  93.          var1.add(var2.next());
  94.       }
  95.  
  96.       var2 = this.cscope.keySet().iterator();
  97.  
  98.       while(var2.hasNext()) {
  99.          var1.add(var2.next());
  100.       }
  101.  
  102.       return var1;
  103.    }
  104.  
  105.    public boolean isDefinedVariable(String var1) {
  106.       for(Link var2 = this.scopes; var2 != null; var2 = var2.next) {
  107.          if (var2.scope.get(var1) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
  108.             return true;
  109.          }
  110.  
  111.          if (var2.cscope.get(var1) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
  112.             return true;
  113.          }
  114.       }
  115.  
  116.       return false;
  117.    }
  118.  
  119.    public boolean isFinal(String var1) {
  120.       for(Link var2 = this.scopes; var2 != null; var2 = var2.next) {
  121.          if (var2.cscope.get(var1) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
  122.             return true;
  123.          }
  124.       }
  125.  
  126.       return false;
  127.    }
  128.  
  129.    public void define(String var1, Object var2) {
  130.       if (this.scope.put(var1, var2) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
  131.          throw new IllegalStateException(var1);
  132.       }
  133.    }
  134.  
  135.    public void defineConstant(String var1, Object var2) {
  136.       if (this.cscope.put(var1, var2) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY || this.scope.get(var1) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
  137.          throw new IllegalStateException(var1);
  138.       }
  139.    }
  140.  
  141.    public Object get(String var1) {
  142.       for(Link var2 = this.scopes; var2 != null; var2 = var2.next) {
  143.          Object var3 = var2.scope.get(var1);
  144.          if (var3 != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY || (var3 = var2.cscope.get(var1)) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
  145.             return var3;
  146.          }
  147.       }
  148.  
  149.       throw new IllegalStateException(var1);
  150.    }
  151.  
  152.    public void set(String var1, Object var2) {
  153.       for(Link var3 = this.scopes; var3 != null; var3 = var3.next) {
  154.          Object var4 = var3.scope.get(var1);
  155.          if (var4 != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
  156.             var3.scope.put(var1, var2);
  157.             return;
  158.          }
  159.       }
  160.  
  161.       throw new IllegalStateException(var1);
  162.    }
  163.  
  164.    public void setConstant(String var1, Object var2) {
  165.       this.cscope.put(var1, var2);
  166.    }
  167.  
  168.    public void setVariable(String var1, Object var2) {
  169.       this.scope.put(var1, var2);
  170.    }
  171.  
  172.    public Map getConstants() {
  173.       HashMap var1 = new HashMap(11);
  174.  
  175.       for(Link var2 = this.scopes; var2 != null; var2 = var2.next) {
  176.          for(String var4 : var2.cscope.keySet()) {
  177.             var1.put(var4, var2.cscope.get(var4));
  178.          }
  179.       }
  180.  
  181.       return var1;
  182.    }
  183.  
  184.    public VariableContext() {
  185.       this.enterScope();
  186.    }
  187.  
  188.    public VariableContext(Set var1) {
  189.       this();
  190.       Iterator var2 = var1.iterator();
  191.  
  192.       while(var2.hasNext()) {
  193.          ((AbstractVariable)var2.next()).set(this, (Object)null);
  194.       }
  195.  
  196.    }
  197. }
  198.